A common component of computer management systems is the configuration management database (CMDB). The CMDB typically acts as a central repository for all information about the system being managed. There is typically no mechanism provided for creating a view on the CMDB supporting only currently, relevant information, such as only information relevant to the current state of the system being managed. Because of this, management tools cannot effectively use the CMDB as a communication and coordination mechanism because any partial updates they perform would be considered by other entities, such as users, to be the authoritative state on the system, not a state which represents the partial solution to a high-level management goal. Furthermore, tools which update the CMDB, but then fail to complete their intended purpose, could leave the CMDB in an inconsistent state.
Lacking this coordination method, management systems tend to be built in a more monolithic way. That is, one piece of code is developed which performs a complete management function. However, software engineering practices have shown repeatedly that systems which decompose a large problem into smaller, composable modules are easier to maintain, are less error prone, and are more flexible and can more rapidly be applied to solving new problems as they arise.